package top.huhuiyu.springboot3.service;

public interface RedisService {

    /**
     * 判断key是否存在
     *
     * @param key redis中的key
     * @return 是否存在
     */
    boolean has(String key);

    /**
     * 保存对象到redis中
     *
     * @param key 保存的key
     * @param t   保存的对象
     * @param <T> 泛型对象参数
     */
    <T> void save(String key, T t);

    /**
     * 保存带过期时间的数据
     *
     * @param key     redis的key
     * @param t       保存的对象
     * @param timeout 过期时间（秒）
     * @param <T>     泛型类型
     */
    <T> void save(String key, T t, int timeout);

    /**
     * 更新带过期时间的数据
     *
     * @param key redis中的key
     * @param t   数据
     * @param <T> 泛型类型
     */
    <T> void update(String key, T t);

    /**
     * 从redis中获取数据
     *
     * @param key   redis的key
     * @param clazz 数据类型
     * @param <T>   泛型类型
     * @return 数据
     */
    <T> T load(String key, Class<T> clazz);

    /**
     * 删除key对应的数据
     *
     * @param key redis中的key
     */
    void delete(String key);
}
